package com.atguigu.web01.controller;

import com.atguigu.web01.bean.Person;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author 杨林
 * @create 2023-08-24 9:30 星期四
 * description:
 */
@RestController
public class ParameterTestController {

    /**
     * @PathVariable Map<String,String> pv  提取所有的路径变量
     * @param id
     * @param username
     * @param pv
     * @return
     */
    @GetMapping("/car/{id}/owner/{username}")
    public Map<String,Object> getCar(@PathVariable("id") Integer id,
                                     @PathVariable("username") String username,
                                     @PathVariable Map<String,String> pv,
                                     @RequestHeader("User-Agent") String userAgent,
                                     @RequestHeader("Host") String host,
                                     @RequestHeader Map<String,String> allHeader,
                                     @RequestParam("age") Integer age,
                                     @RequestParam("interest") List<String> interests,
                                     @RequestParam Map<String,String> rp,
                                     @CookieValue("Idea-efbc0c7e") String efbc0c7e){
        Map<String,Object> map = new HashMap<>();
//        map.put("id",id);
//        map.put("username",username);
//        map.put("pv",pv);
//        map.put("User-Agent",userAgent);
//        map.put("Host",host);
//        map.put("allHeader",allHeader);
//        map.put("age",age);
//        map.put("interests",interests);
//        map.put("rp",rp);
        map.put("efbc0c7e",efbc0c7e);
        return map;
    }
    
    @PostMapping("/save")
    public Map postMethod(@RequestBody String content){
        Map<String,Object> map = new HashMap<>();
        map.put("content",content);
        return map;
    }


    /**
     * 矩阵变量
     * 
     */
    //1、 语法： /cars/sell;low=34;brand=byd,audi,yd
    //2、SpringBoot默认禁用了矩阵变量的功能
    //  手动开启   对于路径的处理 UrlPathHelper进行解析  
    //      removeSemicolonContent（移除分号内容）属性用来支持矩阵变量
    //3、矩阵变量必须有url路径变量才能被解析
    @GetMapping("/cars/{path}")
    public Map<String,Object> carsSell(@MatrixVariable("low") Integer low,
                                       @MatrixVariable("brand") List<String> brand,
                                       @PathVariable("path") String path){
        Map<String,Object> map = new HashMap<>();
        map.put("low",low);
        map.put("brand",brand);
        map.put("path",path);
        return map;
    }
    
    // /boss/1;age=20/2;age=10
    @GetMapping("/boss/{bossId}/{empId}")
    public Map<String,Object> boss(@MatrixVariable(value = "age",pathVar = "bossId")Integer bossAge,
                                   @MatrixVariable(value = "age",pathVar = "empId") Integer empAge){
        Map<String,Object> map = new HashMap<>();
        map.put("bossAge",bossAge);
        map.put("empAge",empAge);
        return map;
    }


    /**
     * 数据绑定：页面提交的请求数据（GET，POST）都可以和对象属性进行绑定
     * @param person
     * @return
     */
    @PostMapping("/saveuser")
    public Person saveUser(Person person){
        
        return person;
    }
    
}
